package cn.iocoder.yudao.module.custom.controller.admin.merchant.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
* 商户信息 Base VO，提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 * @author Administrator
 */
@Data
public class MerchantBaseVO {

    @Schema(description = "商户id", required = true)
    @NotNull(message = "商户id不能为空")
    private Integer merchantId;

    @Schema(description = "商户名称", required = true)
    @NotNull(message = "商户名称不能为空")
    private String merchantName;

    @Schema(description = "商户状态", required = true)
    @NotNull(message = "商户状态不能为空")
    private Integer merchantStatus;

    @Schema(description = "服务商名", required = true)
    @NotNull(message = "服务商名不能为空")
    private String serviceProviderName;

    @Schema(description = "登录用户名", required = true)
    @NotNull(message = "登录用户名不能为空")
    private String loginUsername;

    @Schema(description = "联系人真实姓名", required = true)
    @NotNull(message = "联系人真实姓名不能为空")
    private String contactPersonName;

    @Schema(description = "身份证号", required = true)
    @NotNull(message = "身份证号不能为空")
    private String identityCardNumber;

    @Schema(description = "手机号", required = true)
    @NotNull(message = "手机号不能为空")
    private String phoneNumber;

    @Schema(description = "邮箱")
    private String email;

    @Schema(description = "地址", required = true)
    @NotNull(message = "地址不能为空")
    private String address;

    @Schema(description = "QQ")
    private String qq;

    @Schema(description = "网站名称")
    private String websiteName;

    @Schema(description = "网站地址")
    private String websiteUrl;

    @Schema(description = "客服电话", required = true)
    @NotNull(message = "客服电话不能为空")
    private String customerServicePhone;

    @Schema(description = "一级行业分类", required = true)
    @NotNull(message = "一级行业分类不能为空")
    private String firstLevelCategory;

    @Schema(description = "二级行业分类", required = true)
    @NotNull(message = "二级行业分类不能为空")
    private String secondLevelCategory;

    @Schema(description = "三级行业分类", required = true)
    @NotNull(message = "三级行业分类不能为空")
    private String thirdLevelCategory;

    @Schema(description = "法人姓名", required = true)
    @NotNull(message = "法人姓名不能为空")
    private String legalPersonName;

    @Schema(description = "法人电话", required = true)
    @NotNull(message = "法人电话不能为空")
    private String legalPersonPhone;

    @Schema(description = "法人身份证号码", required = true)
    @NotNull(message = "法人身份证号码不能为空")
    private String legalPersonIdCardNumber;

    @Schema(description = "法人身份证有限期", required = true)
    @NotNull(message = "法人身份证有限期不能为空")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime legalPersonIdCardExpiryDate;

    @Schema(description = "营业执照编号", required = true)
    @NotNull(message = "营业执照编号不能为空")
    private String businessLicenseNumber;

    @Schema(description = "营业执照有效期", required = true)
    @NotNull(message = "营业执照有效期不能为空")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime businessLicenseExpiryDate;

    @Schema(description = "支付单号", required = true)
    @NotNull(message = "支付单号不能为空")
    private String paymentNumber;

    @Schema(description = "开户名称(持卡人姓名)", required = true)
    @NotNull(message = "开户名称(持卡人姓名)不能为空")
    private String accountName;

    @Schema(description = "结算账号", required = true)
    @NotNull(message = "结算账号不能为空")
    private String settlementAccount;

    @Schema(description = "开户银行", required = true)
    @NotNull(message = "开户银行不能为空")
    private String bankName;

    @Schema(description = "账号类型", required = true)
    @NotNull(message = "账号类型不能为空")
    private Integer accountType;

    @Schema(description = "开户地选择省", required = true)
    @NotNull(message = "开户地选择省不能为空")
    private String province;

    @Schema(description = "开户地选择市", required = true)
    @NotNull(message = "开户地选择市不能为空")
    private String city;

    @Schema(description = "开户地选择县", required = true)
    @NotNull(message = "开户地选择县不能为空")
    private String county;

    @Schema(description = "开户银行支行", required = true)
    @NotNull(message = "开户银行支行不能为空")
    private String bankBranch;

    @Schema(description = "费率描述", required = true)
    @NotNull(message = "费率描述不能为空")
    private String rateDescription;

}
